#pragma once
#include <iostream>
#include <string>

#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

//网络地址和主机地址之间进行转换的类

class InetAddr
{
public:
    InetAddr(struct sockaddr_in &addr) : _addr(addr)
    {
        _port = ntohs(_addr.sin_port); //从网络中拿到的网络序列
        _ip = inet_ntoa(_addr.sin_addr); //4字节网络风格IP，点分十进制的IP
    }
    uint16_t Port() {return _port;}
    std::string Ip() {return _ip;}

    ~InetAddr()
    {}
private:
    struct sockaddr_in _addr;
    std::string _ip;
    uint16_t _port;
};
//InetAddr 类提供了一个方便的接口来封装 struct sockaddr_in，并提供方法来获取 IP 地址和端口号。
//通过使用 ntohs 和 inet_ntoa，可以将网络字节序的地址和端口转换为更易读的格式